import {defineStore} from "pinia"
import {PUBLIC_KEY, PRIVATE_KEY} from "@/utils/rsa_utils.js"
import {stringIsNull} from "@/utils/string_utils.js";

/**
 * 定义与 RSA 加密相关的 Store
 * 'rsaStore' 为定义的 Store 的 id
 *
 * @type {StoreDefinition<string, {}, {}, {}>}
 */
const useRSAStore = defineStore('rsaStore',{
    state: () => ({
        // 通用的 RSA 密钥对
        commonKeyPair: {
            [PUBLIC_KEY]: '',
            [PRIVATE_KEY]: ''
        }
    }),
    actions: {
        /**
         * 保存通用的 RSA 密钥对
         *
         * @param publicKey 公钥
         * @param privateKey 私钥
         */
        saveCommonKeyPair(publicKey = '', privateKey = '') {
            // 保存公钥
            if (!stringIsNull(publicKey)) this.commonKeyPair[PUBLIC_KEY] = publicKey
            // 保存私钥
            if (!stringIsNull(privateKey)) this.commonKeyPair[PRIVATE_KEY] = privateKey
        },
    },
    getters: {
        /**
         * 获取通用的 RSA 公钥
         *
         * @return {*}
         */
        commonPublicKey() {
            return this.commonKeyPair[PUBLIC_KEY]
        },
        /**
         * 获取通用的 RSA 私钥
         *
         * @return {*}
         */
        commonPrivateKey() {
            return this.commonKeyPair[PRIVATE_KEY]
        },
    }
})

/**
 * 导出 Store
 */
export default useRSAStore